package com.upcode.weighing.vo.req.pay;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @description 小程序端 开票管理 交互实体类
 */
public class WXPayInvoice implements Serializable {


    @JsonSerialize(using= ToStringSerializer.class)
    @JsonFormat(shape = JsonFormat.Shape.STRING )
    @NotNull(message = "缴费记录id 不能为空")
    @ApiModelProperty(value = "缴费记录id")
    private Long recordId;
    @ApiModelProperty(value = "客户姓名")
    @Size(max = 20,message = "客户姓名最多20位")
    @NotNull
    private String clientName;
    @ApiModelProperty(value = "客户纳税人识别号")
    @Pattern(regexp = "^[A-Za-z0-9]+$",message = "纳税人识别号 只能是字母和数字")
    @Length(max = 18,message = "纳税人识别号为18位")
    @NotNull
    private String clientIdNumber;
    @ApiModelProperty(value = "客户地址")
    @Length(max = 80,message = "地址长度过长")
    @NotNull
    private String clientAddress;
    @ApiModelProperty(value = "客户手机号")
    @Length(max = 11,message = "客户手机号格式不对")
    @Pattern(regexp = "^[0-9]+$",message = "联系方式只能是数字")
    @NotNull
    private String clientPhone;
    @ApiModelProperty(value = "客户开户行及账号")
    @Length(max = 80,message = "客户开户行及账号长度超过限制")
    @NotNull
    private String clientAccount;
    @ApiModelProperty(value = "服务名称")
    @Length(max = 20,message = "服务名称超过限制")
    @NotNull
    private String serverName;
    @ApiModelProperty(value = "开票类型 1个人 2企业")
    @NotNull
    private Integer invoiceType;
    @ApiModelProperty(value = "发票类型  1普通发票  2增值税发票")
    @NotNull
    private Integer makeInvoiceType;


    public Long getRecordId() {
        return recordId;
    }

    public void setRecordId(Long recordId) {
        this.recordId = recordId;
    }

    public String getClientName() {
        return clientName;
    }

    public void setClientName(String clientName) {
        this.clientName = clientName;
    }

    public String getClientIdNumber() {
        return clientIdNumber;
    }

    public void setClientIdNumber(String clientIdNumber) {
        this.clientIdNumber = clientIdNumber;
    }

    public String getClientAddress() {
        return clientAddress;
    }

    public void setClientAddress(String clientAddress) {
        this.clientAddress = clientAddress;
    }

    public String getClientPhone() {
        return clientPhone;
    }

    public void setClientPhone(String clientPhone) {
        this.clientPhone = clientPhone;
    }

    public String getClientAccount() {
        return clientAccount;
    }

    public void setClientAccount(String clientAccount) {
        this.clientAccount = clientAccount;
    }

    public String getServerName() {
        return serverName;
    }

    public void setServerName(String serverName) {
        this.serverName = serverName;
    }

    public Integer getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(Integer invoiceType) {
        this.invoiceType = invoiceType;
    }

    public Integer getMakeInvoiceType() {
        return makeInvoiceType;
    }

    public void setMakeInvoiceType(Integer makeInvoiceType) {
        this.makeInvoiceType = makeInvoiceType;
    }


}
